<?php
/**
 * <https://y.st./>
 * Copyright © 2018 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'<{title}>' => 'Renewal',
	'takedown' => '2017-11-01',
	'<{body}>' => <<<END
<section id="drudgery">
	<h2>Drudgery</h2>
	<p>
		I continued the discussion:
	</p>
	<blockquote>
		<p>
			You&apos;re right, sometimes we act on behalf of our employers, who don&apos;t have the same viewpoint as our own.
			The authors of the first article may have written it that way because that is what was required of them.
			I stand by my assessment though that these articles are about two <strong>*very*</strong> different topics though, and that it&apos;s the content, not the narrative, that captures my attention.
			The first article is about what sporting events have and have not been cancelled.
			The second one&apos;s about the attack and the impact on our country and the world.
			The narrative of the second article may be what draws some people, but for me, I have zero interest in sporting events, so narrative or not, I&apos;ll always be drawn to the article that focuses on just about anything else.
		</p>
	</blockquote>
	<p>
		... then submitted my post for the day:
	</p>
	<blockquote>
		<p>
			You make a good point that when reading just the bare facts, it&apos;s less likely that there&apos;s a hidden agenda at play.
			Opinionative pieces usually seek to make you change your mind about something.
		</p>
		<p>
			I&apos;m not sure the event cancellations were an expression of mourning for everyone though.
			From the sound of it, one league was likely to cancel games for public relations reasons.
			They&apos;d made the mistake of not cancelling last time, and it showed how uncaring they were at that time.
			This time, they want to &quot;do the right thing&quot;, which is likely code for &qout;make sure to look like they care&quot;.
			Other games were cancelled for security reasons.
			After an attack, keeping people safe took priority.
			Only some of the games were cancelled out of mourning.
		</p>
	</blockquote>
	<p>
		The professor hasn&apos;t replied yet.
		Go figure.
		I clearly don&apos;t have much faith in them, as you can tell from that remark, but now that I think on it, I&apos;m not sure why not.
		I can easily see why I don&apos;t have much faith in this course.
		The course is full of idiocy and has yet to provide anything whatsoever of value.
		But the professor?
		I haven&apos;t actually had any trouble with the professor.
		The student that said they&apos;d help me latched onto that anonymity thing real hard.
		They now understand why I&apos;m keeping this within the school, but said they&apos;d fill out the survey after I have the anonymity thing set up.
		They recommended a site called Survey Monkey.
		Survey Monkey doesn&apos;t look like it&apos;ll work out, but I&apos;ll try again tomorrow.
		My reply:
	</p>
	<blockquote>
		<p>
			I&apos;ll try again in the morning, but it looks like Survey Monkey doesn&apos;t like me tonight.
			It sends me a $a[CAPTCHA] to fill out, but then refuses to actually <strong>*show*</strong> the $a[CAPTCHA] on the grounds that it thinks the page request is automated.
			But ... isn&apos;t that what $a[CAPTCHA]s are designed to prevent?
			If it thinks the request is automated, it should show the $a[CAPTCHA] so the user can prove the request isn&apos;t.
		</p>
		<img src="/img/CC_BY-SA_4.0/y.st./coursework/ENG1102/idiotic_CAPTCHA.png" alt="The site refuses to send the CAPTCHA because it thinks I&apos;m a script ... That&apos;s idiotic." class="framed-centred-image" width="1014" height="774"/>
	</blockquote>
</section>
<section id="Minetest">
	<h2>Minetest</h2>
	<img src="/y.st./source/y.st./static/img/CC_BY-SA_3.0/minetest.net./weblog/2018/03/05.png" alt="A remaining gap in the wall with a waterfall" class="framed-centred-image" width="800" height="600"/>
	<p>
		I&apos;ve been looking at various renewal mechanics I can set up for use in Minetest lately.
		One was a hacky mod, called <code>trace_minerals</code>, in which you could sometimes dig random things out of stone.
		How likely it was you&apos;d dig out a non-cobble item was based on your <code>minestats</code> mining stats.
		The second was a mod called <code>renew</code> that I keep revisiting.
		The premise is that various renewal mechanics are set up, individual to the material.
		Nodes and craft items are added, with the nodes showing up in the world somehow, dropping the craft items when dug, and you can craft several of the item together to get a usable node of the material that is to be renewed.
		The main reason for this setup is so <code>minestats</code> can record your renewal efforts.
		The third setup involves a shop with unlimited goods, which can be traded for.
		<code>minestats</code> stats would be used as flags indicating whether you&apos;d dug certain materials before, and you can only buy things you&apos;ve actually worked to get at least once in the past.
		Are you starting to see a theme?
		That&apos;s right: I&apos;m trying to hook the renewal mechanic into <code>minestats</code> in some way, shape, or form, and I&apos;m not being too picky about how I even do it.
		<code>minestats</code> is my prised mod; all other mods I make come in second to it.
		I tried to do that with my protection mod too ... eventually, I abandoned that plan because protecting your creations from vandalism is no small matter.
		The concept shouldn&apos;t be tainted with any other tasks, such as digging as much coal as you possibly can.
		Not everyone&apos;s a coal miner, but everyone needs access to equal protection.
		Renewal though is fair game.
		If I can find a clean way to hook it in, I should go for it.
	</p>
	<p>
		And at work, I figured out how to do it.
		I think.
		Yesterday, I made excellent progress in understanding the intended semantics of <code>minestats</code>.
		Before that, I gave up on having <code>minestats</code> define what should be counted based purely on general algorithms, and opened up the $a[API] to allow other mods to help out in whatever way they see fit; they can even go as far as to hard-coded node/drop names if they choose to, which is both the ultimate in fine-tuning, as well as the ultimate in horrid code.
		At work today, I came to the realisation that it&apos;s actually kind of good that <code>minestats</code> doesn&apos;t detect coral automatically.
		Coral isn&apos;t present in worlds created using the <code>v6</code> map generator.
		However, the nods are always defined in Minetest Game.
		In a <code>v6</code> world, coral is in a semantically identical situation as dirt with grass footsteps; it shouldn&apos;t be counted becuase it never shows up in-game.
		Because <code>minestats</code> fails to detect coral and needs an external mod to point it out, that external mod can choose to conditionally expose coral to <code>minestats</code>.
		That got me thinking.
		Now that I understand the semantics of my own mod better and I&apos;ve opened up the $a[API] in the way I did, any <code>minestats</code>-aware mod can add nodes and drops to be counted, regardless of how those nodes and drops are defined.
		As long as I work within the semantics of what <code>minestats</code> should do, I can make it do just that.
		I don&apos;t need to make a bunch of craft items just because, I can make the nodes drop other nodes directly, which at least in most cases, provides a much cleaner game.
	</p>
	<p>
		Some renewal methods will completely ignore <code>minestats</code>.
		In particular, the water lilies will spread in a similar way to other single-node plants.
		It&apos;s just the cleanest way to accomplish what I want accomplished.
		I&apos;ve come up with most of the renewal mechanics already, either by going with the obvious that I&apos;d once avoided or by tweaking something I&apos;d already planned before to make it better.
		My main hold-ups that remain are the liquids, sands, clay, and desert stone.
		I kind of have an idea for clay, but it&apos;s a bit of an ugly mess.
		Then again, the coral renewal&apos;s going to be pretty ugly too ...
		I can make the sands work with grinders, which I may have discussed already in the past, but grinding is sure to take more energy than smelting.
		It needs a more powerful fuel source: mese.
		I think that setup might make sand a bit too expensive to renew though.
		As for liquids, I have absolutely no idea what to do about them.
	</p>
</section>
END
);
